@use 'sass:map';
@use 'sass:math';
@use 'sass:color';
@use 'sass:list';

/**
 * @description 颜色混合函数
 * @param {string} $base - 基础颜色
 * @param {string} $color - 混合颜色
 * @param {number} $weight - 混合权重，1-10 之间的数字, 代表为 10%-100%
 * @return {string} - 混合后的颜色
 */
@function mix-color($base, $color, $weight) {
  @return color.mix($base, $color, get-percent($weight));
}

/**
 * @description 将数字转换为百分比，用于颜色混合函数
 * @param {number} $num - 数字
 * @return {string} - 百分比
 */
@function get-percent($num) {
  @return math.percentage(math.div($num, 10));
}

/**
 * @description 从映射中获取值
 * @param {map} $map - 映射
 * @param {string} $key - 键
 * @return {any} - 值
 */
@function map-get($map, $key) {
  @return map.get($map, $key);
}
/**
 * @description 从映射中获取所有键
 * @param {map} $map - 映射
 * @return {list} - 键列表
 */
@function map-get-all-keys($map) {
  @return map.keys($map);
}
/**
 * @description 合并两个map
 * @param {map} $map - 映射
 * @param {map} $map2 - 映射
 * @return {map} - 合并后的map
 */
@function map-merge($map, $map2) {
  @return map.merge($map, $map2);
}
/**
 * @description 获取所有的主题模式
 * @param {map} $map - 映射
 * @return {list} - 值列表
 */
@function theme-get-all-mode($list) {
  $result-list: ();
  @each $item in $list {
    $result-list: list.append($result-list, map-get($item, 'mode'));
  }
  @return $result-list;
}
/**
 * @description 合并默认主题
 * @param {list} $list - 列表
 * @param {map} $map2 - 映射
 * @return {map} - 合并后的map
 */
@function merge-default-theme($list, $default-map) {
  @return list.append($list, $default-map);
}
/**
* @description 获取主题配置
* @param {list} $list - 映射
* @param {string} $key - 键
* @return {map} - 值
*/
@function theme-get-config($list, $key) {
  @each $item in $list {
    @if map-get($item, 'mode') == $key {
      @return $item;
    }
  }
}
